package com.yuxi.Dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;
import com.yuxi.Entity.FirstCheckExcel;
import com.yuxi.Entity.Information;
import com.yuxi.Entity.InformationPort;
import com.yuxi.Entity.PrisonRole;
import com.yuxi.Entity.PrisonStructure;
import com.yuxi.Entity.TaskInformationView;
import com.yuxi.Entity.UserInfo;
import com.yuxi.Request.DateQuery;
import com.yuxi.Request.InformationQuery;
import com.yuxi.Request.Page;
import com.yuxi.Response.InfoCount;
import com.yuxi.view.UserPowerView;

/**
 *信息操作接口
 * @author hunter
 * @version 1.0
 * 2016/07/18
 */

@Repository
public interface InformationDao  {
	/**
	 * 通过ID获取Information
	 * @param 	InformationID
	 * @return Information 
	 * */
	public Information getInformationById(Integer id);
	/**
	 * 通过InformationID获取Information
	 * @param 	InformationID
	 * @return Information 
	 * */
	public Information getInformationByInfoId(Integer infoId);
	/**
	 * 添加一个Information  并返回添加的实体类
	 * @param 	InformationId
	 * @return Information 
	 * */
	public Information addInformation(Information i);
	/**
	 * 修改一个Information  并返回修改的实体类
	 * @param 	i  Information实体类
	 * @return Information 
	 * */
	public void modifyInformation(Information i);
	/**
	 * 删除一个Information  并返回删除的实体类
	 * @param i  Information实体类
	 * @return Information 
	 * */
	public void deleteInformation(Information i);
	/**
	 * 查询所有信息
	 * @param p
	 * @return
	 */
	public Page<Information> getInfomationAll(Page p);
	/**
	 * 通过分级查询信息
	 * @param p
	 * @param id
	 * @return
	 */
	public Page<Information> getInfomationByClassificationId(Page p,int id);
	/**
	 * 通过分类查询信息
	 * @param p
	 * @param id
	 * @return
	 */
	public Page<Information> getInfomationBySort(Page p,int id);
	
	public boolean delInformationById(Integer id);
	/**
	 * 查询是录入人的信息
	 * */
	public Page<Information> getInfomationByUserId(InformationQuery inforQuery,Page p,int userId);
	
	/**
	 * 查询初审信息的信息
	 * */
	public Page<Information> getInfomationByQuery(InformationQuery inforQuery,Page p,String wherehql,String arges);
	/**
	 * 待点评信息
	 * @param inforQuery
	 * @param p
	 * @param wherehql
	 * @param arges
	 * @return
	 */
	public Page<Information> getCommentInfomationByQuery(InformationQuery inforQuery,Page p,String wherehql,String arges);

	/**
	 * 查询待评价的信息
	 * */
	public Page<Information> getRateInfomationByQuery(InformationQuery inforQuery,Page p, Integer userId);

	public Page<Information> getInfomationByInfoQuery(InformationQuery inforQuery,Page p,String wherehql,String arges);

	/**
	 * @param inforQuery
	 * @param p
	 * @param userId
	 * @return
	 */
	public Page<Information> getInfomationByQuery(InformationQuery inforQuery,Page p,int userId);

	/**
	 * @param inforQuery
	 * @param p
	 * @param userId
	 * @param state
	 * @return
	 */
	public Page<TaskInformationView>  getUserZeRenInfoList(InformationQuery inforQuery,Page p,int userId,int state);
	/**
	 * @param inforQuery
	 * @param p
	 * @param userId
	 * @param state
	 * @return
	 */
	public Page<TaskInformationView>  getAllTimeOutInfoList(InformationQuery inforQuery,Page p,int userId,int state);

	/**
	 * @param inforQuery
	 * @param flowId
	 * @param p
	 * @param userId
	 * @return
	 */
	public Page<Information>  getInformationAlreadyDoByFLow(InformationQuery inforQuery,int flowId,Page p,int userId,List<InformationPort> ports);
	/**
	 * @param id
	 */
	public void deleteInformationBYId(Integer id); 
	public Page<Information>  getAllInformation(InformationQuery inforQuery ,Page p,PrisonStructure pStructure);
	
	/**
	 * 获取待查阅点评信息
	 * @param inforQuery
	 * @param p
	 * @return
	 */
	public Page<Information>  getAllCommentInformation(InformationQuery inforQuery ,Page p,int userId);
	/**
	 * 获取待查阅评价信息
	 * @param inforQuery
	 * @param p
	 * @return
	 */
	public Page<Information>  getAllEvaluationInformation(InformationQuery inforQuery ,Page p,Integer userId);

	/**
	 * @param idArray
	 * @return
	 */
	public List<FirstCheckExcel> getIinformationById(int[] idArray);
	
	/**
	 * 获取所有信息
	 * @param userquesy
	 * @return
	 */
	public Page<Information> getAllInfoList(InformationQuery userquesy,Page<Information> p,String pId);
	
	
	/**
	 * 获取待处理记录数
	 * @param u
	 * @param role
	 * @return
	 */
	public InfoCount getAllFlowCount(UserInfo u,UserPowerView power);
	
	/**
	 * 获取已调配信息
	 * @param userquesy
	 * @param p
	 * @param u
	 * @return
	 */
	public  Page<Information> getAreadyDisInfo(InformationQuery userquesy,Page<Information> p,UserInfo u);

	public Page<TaskInformationView>  getUserDispatchList(InformationQuery inforQuery,Page p,int userId);
	
	
	
	/**
	 * 获取可以调配信息
	 * @param userquesy
	 * @param p
	 * @param pId
	 * @return
	 */
	public Page<Information> getCanTaskDisList(InformationQuery userquesy,Page<Information> p,String pId);


	/**获取所有监区监狱数据汇总
	 * @return
	 */
	public List<Map<String, Object>> getPriosnALlData(DateQuery query);
	
	/**获取所有监区监狱数据汇总BY月份
	 * @return
	 */
	public List<Map<String, Object>> getPrisonAllDataByMonth();
	
	
	/**
	 * 民警个人情况查询信息
	 * @param query
	 * @param userId
	 * @return
	 */
	public List<Information> getInforList(InformationQuery query,Integer userId);
	
	public Page<TaskInformationView>  getUserNameByTaskViewUserId(Page p);
	public Page<Information>  getUserNameByInfoUserId(Page p);
	
}

